import shortid from 'shortid'

/**
 * 短ID 生成短
 *
 * @export
 * @return {string} 
 */
export function SId() {
    return shortid()
}



var fileType = {
    'image': ['webp', 'baidubmp', 'pcx', 'tif', 'gif', 'jpeg', 'jpg', 'tga', 'exif', 'fpx', 'svg', 'pcd', 'dxf', 'ufo', 'png', 'hdri', 'wmf', 'flic', 'emf', 'ico'],
    'psd': ['psd'],
    'cad': ['cdr', 'ai', 'eps', 'raw'],
    'text': ['txt'],
    'html': ['htm', 'html'],
    'mirror': ['iso', 'bin', 'img', 'tao', 'dao', 'cif', 'fcd'],
    'video': ['avi', 'mpeg', 'mpg', 'flv', 'dat', 'ra', 'rm', 'rmvb', 'mov', 'qt', 'asf', 'wmv', 'mkv'],
    'mp3': ['mp3', 'wma', 'mpg', 'wav', 'mv'],
    'zip': ['rar', 'zip', '7z', 'tar', 'xz', 'gz'],
    'xsl': ['xls', 'xlsx'],
    'ppt': ['ppt', 'pptx'],
    'doc': ['doc', 'docx'],
    'pdf': ['pdf'],
    'config': ['conf', 'config', 'ini'],
};

var fileTypeMapping = {};

for (const key in fileType) {
    if (fileType.hasOwnProperty(key)) {
        for (let i = 0; i < fileType[key].length; i++) {
            const element = fileType[key][i];
            fileTypeMapping[element] = key
        };
    }
}

/**
 * 简化文件类型
 *
 * @export
 * @param {string} url
 * @return {string} 
 */
export function getSuffixType(url) {
    var suffix = url.substring(url.lastIndexOf(".") + 1, url.length);
    if (fileTypeMapping.hasOwnProperty(suffix.toLowerCase())) {
        const element = fileTypeMapping[suffix.toLowerCase()];
        return element;
    } else {
        return 'file'
    }
};


/**
 * 阿拉伯数字 转 汉字数字
 *
 * @export
 * @param {*} tranvalue
 * @return {*} 
 */
export function transformSmallNumber(tranvalue) {
    try {
        tranvalue = tranvalue.toString();
        var i = 1;
        var dw2 = new Array("", "万", "亿");//大单位
        var dw1 = new Array("十", "百", "千");//小单位
        var dw = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");//整数部分用
        //以下是小写转换成大写显示在合计大写的文本框中     
        //分离整数与小数
        var source = splits(tranvalue);
        var num = source[0];
        var dig = source[1];

        //转换整数部分
        var k1 = 0;//计小单位
        var k2 = 0;//计大单位
        var sum = 0;
        var str = "";
        var len = source[0].length;//整数的长度
        for (i = 1; i <= len; i++) {
            var n = source[0].charAt(len - i);//取得某个位数上的数字
            var bn = 0;
            if (len - i - 1 >= 0) {
                bn = source[0].charAt(len - i - 1);//取得某个位数前一位上的数字
            }
            sum = sum + Number(n);
            if (sum != 0) {
                str = dw[Number(n)].concat(str);//取得该数字对应的大写数字，并插入到str字符串的前面
                if (n == '0') sum = 0;
            }
            if (len - i - 1 >= 0) {//在数字范围内
                if (k1 != 3) {//加小单位
                    if (bn != 0) {
                        str = dw1[k1].concat(str);
                    }
                    k1++;
                } else {//不加小单位，加大单位
                    k1 = 0;
                    var temp = str.charAt(0);
                    if (temp == "万" || temp == "亿")//若大单位前没有数字则舍去大单位
                        str = str.substr(1, str.length - 1);
                    str = dw2[k2].concat(str);
                    sum = 0;
                }
            }
            if (k1 == 3)//小单位到千则大单位进一
            { k2++; }
        };
        // //转换小数部分
        var strdig = "";
        if (dig != "") {
            var n = dig.charAt(0);
            if (n != 0) {
                strdig += '点' + dw[Number(n)];//加数字
            }
            var n = dig.charAt(1);
            if (n != 0) {
                strdig += dw[Number(n)];//加数字
            };
            var n = dig.charAt(2);
            if (n != 0) {
                strdig += dw[Number(n)];//加数字
            };
            var n = dig.charAt(3);
            if (n != 0) {
                strdig += dw[Number(n)];//加数字
            };
            var n = dig.charAt(4);
            if (n != 0) {
                strdig += dw[Number(n)];//加数字
            }
        }
        str += strdig;

        str = str.replace(/^一十/, '十');

    } catch (e) {
        return "转换错误";
    }
    return str;
};

// 

/**
 * 阿拉伯数字 转 大写汉字数字
 *
 * @export
 * @param {*} tranvalue
 * @return {*} 
 */
export function transformBigNumber(tranvalue) {
    try {
        tranvalue = tranvalue.toString();
        var i = 1;
        var dw2 = new Array("", "万", "亿");//大单位
        var dw1 = new Array("拾", "佰", "仟");//小单位
        var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");//整数部分用
        //以下是小写转换成大写显示在合计大写的文本框中     
        //分离整数与小数
        var source = splits(tranvalue);
        var num = source[0];
        var dig = source[1];

        //转换整数部分
        var k1 = 0;//计小单位
        var k2 = 0;//计大单位
        var sum = 0;
        var str = "";
        var len = source[0].length;//整数的长度
        for (i = 1; i <= len; i++) {
            var n = source[0].charAt(len - i);//取得某个位数上的数字
            var bn = 0;
            if (len - i - 1 >= 0) {
                bn = source[0].charAt(len - i - 1);//取得某个位数前一位上的数字
            }
            sum = sum + Number(n);
            if (sum != 0) {
                str = dw[Number(n)].concat(str);//取得该数字对应的大写数字，并插入到str字符串的前面
                if (n == '0') sum = 0;
            }
            if (len - i - 1 >= 0) {//在数字范围内
                if (k1 != 3) {//加小单位
                    if (bn != 0) {
                        str = dw1[k1].concat(str);
                    }
                    k1++;
                } else {//不加小单位，加大单位
                    k1 = 0;
                    var temp = str.charAt(0);
                    if (temp == "万" || temp == "亿")//若大单位前没有数字则舍去大单位
                        str = str.substr(1, str.length - 1);
                    str = dw2[k2].concat(str);
                    sum = 0;
                }
            }
            if (k1 == 3)//小单位到千则大单位进一
            { k2++; }
        }

        //转换小数部分
        var strdig = "";
        if (dig != "") {
            var n = dig.charAt(0);
            if (n != 0) {
                strdig += dw[Number(n)] + "角";//加数字
            }
            var n = dig.charAt(1);
            if (n != 0) {
                strdig += dw[Number(n)] + "分";//加数字
            }
        }
        str += "元" + strdig;
    } catch (e) {
        return "0元";
    }
    return str;
}
